package com.battle.pojo.param.casePatrolStation;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
import com.battle.pojo.converter.StringListConverter;
import com.battle.pojo.enums.ArchitecturalStructureTypeEnum;
import com.battle.pojo.enums.FrameNatureTypeEnum;
import com.battle.pojo.param.caseDispatch.CreateCaseDispatchParam;
import com.fasterxml.jackson.annotation.JsonFormat;
import jakarta.persistence.Column;
import jakarta.persistence.Convert;
import lombok.Data;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import org.hibernate.validator.constraints.Length;

import java.math.BigDecimal;
import java.sql.Timestamp;
import java.time.*;
import java.util.List;


/**
* 【描 述】：
* 【环 境】：J2SE 17
* 【详 细】：
*
*/
@Data
public class CreateCasePatrolStationParam {
    /**
     * 战例id-不需要传递
     */
    private Long caseId;

    /**
     * 警情id-不需要传递
     */
    @Column()
    private Long sirensId;

    /**
     * 标题
     */
    @Column(length = 255)
    private String name;

    /**
     * 报警日期 yyyy-MM-dd HH:mm:ss
     */
    @Column()
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime alarmDate;

    /**
     * 着火地址
     */
    @Column(length = 255)
    private String ignitionSite;

    /**
     * 着火地址经度
     */
    @Column(length = 255)
    private String longitudeIgnition;

    /**
     * 着火地址纬度
     */
    @Column(length = 255)
    private  String latitudeIgnition;

    /**
     * 着火单位
     */
    @Column(length = 255)
    private String ignitionUnit;

    /**
     * 燃烧物质
     */
    @Column(columnDefinition="varchar(500)")
    private String burnings;

    /**
     * 燃烧物质照片
     */

    @Column(columnDefinition="varchar(500)")
    @Convert(converter = StringListConverter.class)
    @TableField(value = "burningsPicture",typeHandler = JacksonTypeHandler.class)
    private List<String> burningsPicture;
    /**
     * 天气
     */
    @Column(length = 255)
    private String weather;

    /**
     * 最低温度
     */
    @Column()
    private BigDecimal minTemperature;

    /**
     * 最高温度
     */
    @Column()
    private BigDecimal maxTemperature;

    /**
     * 风力
     */
    @Column()
    private String windPower;

    /**
     * 出动情况-站
     */
    @Column()
    private Integer stand;

    /**
     * 出动情况-车
     */
    @Column()
    private Integer car;

    /**
     * 出动情况-人
     */
    @Column()
    private Integer person;

    /**
     * 指挥中心力量调派情况
     */
    private List<CreateCaseDispatchParam> commandDispatchList;


    /**
     * 损失情况
     */
    @Column(columnDefinition="varchar(500)")
    private String loss;

    /**
     * 损失情况照片
     */

    @Column(columnDefinition="varchar(500)")
    @Convert(converter = StringListConverter.class)
    @TableField(value = "lossPicture",typeHandler = JacksonTypeHandler.class)
    private List<String> lossPicture;

    /**
     * 单位基本情况
     */
    @Column(columnDefinition="varchar(500)")
    private String uniInformation;

    /**
     * 单位基本情况照片
     */

    @Column(columnDefinition="varchar(500)")
    @Convert(converter = StringListConverter.class)
    @TableField(value = "uniInformationPicture",typeHandler = JacksonTypeHandler.class)
    private List<String> uniInformationPicture;

    /**
     * 建筑结构
     */
    @Column()
    private String architecturalStructure;

    /**
     * 建筑结构
     */
    @Column()
    private String frameNature;


    /**
     * 起火情况
     */
    @Column(columnDefinition="varchar(500)")
    private String fireCondition;

    /**
     * 起火情况照片
     */

    @Column(columnDefinition="varchar(500)")
    @Convert(converter = StringListConverter.class)
    @TableField(value = "fireConditionPicture",typeHandler = JacksonTypeHandler.class)
    private List<String> fireConditionPicture;

    /**
     * 其他信息
     */
    @Column(columnDefinition="varchar(500)")
    private String otherInformation;

    /**
     * 现场音频
     */
    @Column(columnDefinition="varchar(500)")
    @Convert(converter = StringListConverter.class)
    @TableField(value = "liveAudio",typeHandler = JacksonTypeHandler.class)
    private List<String> liveAudio;

    /**
     * 消火栓经度
     */
    @Column(length = 255)
    private String longitudeFireCock;

    /**
     * 消火栓纬度
     */
    @Column(length = 255)
    private  String latitudeFireCock;

    /**
     * 消火栓情况
     */
    @Column(length = 255)
    private String fireCock;

    /**
     * 消火栓情况照片
     */
    @Column(columnDefinition="varchar(500)")
    @Convert(converter = StringListConverter.class)
    @TableField(value = "fireCockPicture",typeHandler = JacksonTypeHandler.class)
    private List<String> fireCockPicture;

    /**
     * 天然水源经度
     */
    @Column(length = 255)
    private String longitudeHeadwaters;

    /**
     * 天然水源纬度
     */
    @Column(length = 255)
    private  String latitudeHeadwaters;

    /**
     * 天然水源情况
     */
    @Column(length = 255)
    private String headwaters;

    /**
     * 天然水源情况照片
     */
    @Column(columnDefinition="varchar(500)")
    @Convert(converter = StringListConverter.class)
    @TableField(value = "headwatersPicture",typeHandler = JacksonTypeHandler.class)
    private List<String> headwatersPicture;

    /**
     * 固定消防设施情况
     */
    @Column(length = 255)
    private String fixedFireService;

    /**
     * 固定消防设施情况照片
     */
    @Column(columnDefinition="varchar(500)")
    @Convert(converter = StringListConverter.class)
    @TableField(value = "fixedFireServicePicture",typeHandler = JacksonTypeHandler.class)
    private List<String> fixedFireServicePicture;

    /**
     * 火灾特点
     */
    @Column(length = 255)
    private String fireCharacteristics;

    /**
     * 火灾特点照片
     */
    @Column(columnDefinition="varchar(500)")
    @Convert(converter = StringListConverter.class)
    @TableField(value = "fireCharacteristicsPicture",typeHandler = JacksonTypeHandler.class)
    private List<String> fireCharacteristicsPicture;

    /**
     * 接警立案时间  yyyy-MM-dd HH:mm:ss
     */
    @Column()
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime filingTime;

    /**
     * 接警员id
     */
    @Column()
    private String  filingUserId;

    /**
     * 接警员名称
     */
    @Column(length = 50)
    private String  filingUserName;

    /**
     * 出动力量
     */
    private List<CreateCaseDispatchParam> dispatchList;


    /**
     * 初战阶段
     */
    @Column(length = 255)
    private String initialBattle;

    /**
     * 初战阶段照片
     */
    @Column(columnDefinition="varchar(500)")
    @Convert(converter = StringListConverter.class)
    @TableField(value = "initialBattlePicture",typeHandler = JacksonTypeHandler.class)
    private List<String> initialBattlePicture;

    /**
     * 发展阶段
     */
    @Column(length = 255)
    private String develop;

    /**
     * 发展阶段照片
     */
    @Column(columnDefinition="varchar(500)")
    @Convert(converter = StringListConverter.class)
    @TableField(value = "developPicture",typeHandler = JacksonTypeHandler.class)
    private List<String> developPicture;

    /**
     * 控制阶段
     */
    @Column(length = 255)
    private String control;

    /**
     * 控制阶段照片
     */
    @Column(columnDefinition="varchar(500)")
    @Convert(converter = StringListConverter.class)
    @TableField(value = "controlPicture",typeHandler = JacksonTypeHandler.class)
    private List<String> controlPicture;

    /**
     * 熄灭阶段
     */
    @Column(length = 255)
    private String extinguish;

    /**
     * 熄灭阶段照片
     */
    @Column(columnDefinition="varchar(500)")
    @Convert(converter = StringListConverter.class)
    @TableField(value = "extinguishPicture",typeHandler = JacksonTypeHandler.class)
    private List<String> extinguishPicture;

    /**
     * 经验教训
     */
    @Column(length = 255)
    private String experience;

    /**
     * 经验教训照片
     */
    @Column(columnDefinition="varchar(500)")
    @Convert(converter = StringListConverter.class)
    @TableField(value = "experiencePicture",typeHandler = JacksonTypeHandler.class)
    private List<String> experiencePicture;

    /**
     * 改进措施
     */
    @Column(length = 255)
    private String improvement;

    /**
     * 改进措施照片
     */
    @Column(columnDefinition="varchar(500)")
    @Convert(converter = StringListConverter.class)
    @TableField(value = "improvementPicture",typeHandler = JacksonTypeHandler.class)
    private List<String> improvementPicture;


}